{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Otto Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 第四步：调整树的参数：subsample 和 colsample_bytree\n",
    "(粗调，参数的步长为0.1；下一步是在粗调最佳参数周围，将步长降为0.05，进行精细调整)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# path to where the data lies\n",
    "dpath = './'\n",
    "train = pd.read_csv(dpath +\"FE_train.csv\")\n",
    "#train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Variable Identification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Target 分布，看看各类样本分布是否均衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.Disbursed);\n",
    "pyplot.xlabel('Disbursed');\n",
    "pyplot.ylabel('Number of customers');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "每类样本分布不是很均匀，所以交叉验证时也考虑各类样本按比例抽取"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于电脑老旧，故取1%的数据用于完成训练测试任务，集中精力放在参数调优的学习上。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "y = train['Disbursed']\n",
    "X = train.drop(['Disbursed'], axis=1)\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.99,random_state=4)\n",
    "\n",
    "# drop ids and get labels\n",
    "y_train = y_train\n",
    "X_train = X_train.drop(['ID','DOB','LoggedIn','Unnamed: 26'], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "##### 第二轮参数调整得到的n_estimators最优值（65），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "用交叉验证评价模型性能时，用scoring参数定义评价指标。评价指标是越高越好，因此用一些损失函数当评价指标时，需要再加负号，如neg_log_loss，neg_mean_squared_error 详见sklearn文档：http://scikit-learn.org/stable/modules/model_evaluation.html#log-loss"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'subsample': [0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],\n",
       " 'colsample_bytree': [0.6, 0.7, 0.8, 0.9, 1.0]}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "subsample = [i/10.0 for i in range(3,11)]\n",
    "colsample_bytree = [i/10.0 for i in range(6,11)]\n",
    "param_test3_1 = dict(subsample=subsample, colsample_bytree=colsample_bytree)\n",
    "param_test3_1\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/model_selection/_search.py:762: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.07919, std: 0.01019, params: {'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  mean: -0.07686, std: 0.01155, params: {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  mean: -0.07793, std: 0.01232, params: {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  mean: -0.07929, std: 0.01162, params: {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  mean: -0.07803, std: 0.01322, params: {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  mean: -0.07654, std: 0.01377, params: {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  mean: -0.07605, std: 0.01436, params: {'colsample_bytree': 0.6, 'subsample': 0.9},\n",
       "  mean: -0.07364, std: 0.01486, params: {'colsample_bytree': 0.6, 'subsample': 1.0},\n",
       "  mean: -0.07910, std: 0.01407, params: {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  mean: -0.07888, std: 0.01261, params: {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  mean: -0.07460, std: 0.01091, params: {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  mean: -0.07611, std: 0.01302, params: {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  mean: -0.07465, std: 0.01580, params: {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  mean: -0.07413, std: 0.01393, params: {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  mean: -0.07348, std: 0.01495, params: {'colsample_bytree': 0.7, 'subsample': 0.9},\n",
       "  mean: -0.07550, std: 0.01590, params: {'colsample_bytree': 0.7, 'subsample': 1.0},\n",
       "  mean: -0.07305, std: 0.00919, params: {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  mean: -0.07914, std: 0.01227, params: {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  mean: -0.07737, std: 0.01106, params: {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  mean: -0.07477, std: 0.01342, params: {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  mean: -0.07491, std: 0.01338, params: {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  mean: -0.07629, std: 0.01338, params: {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  mean: -0.07548, std: 0.01587, params: {'colsample_bytree': 0.8, 'subsample': 0.9},\n",
       "  mean: -0.07417, std: 0.01442, params: {'colsample_bytree': 0.8, 'subsample': 1.0},\n",
       "  mean: -0.07643, std: 0.01013, params: {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  mean: -0.07871, std: 0.01201, params: {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  mean: -0.07814, std: 0.01090, params: {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  mean: -0.07651, std: 0.01215, params: {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  mean: -0.07481, std: 0.01338, params: {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  mean: -0.07250, std: 0.01521, params: {'colsample_bytree': 0.9, 'subsample': 0.8},\n",
       "  mean: -0.07379, std: 0.01670, params: {'colsample_bytree': 0.9, 'subsample': 0.9},\n",
       "  mean: -0.07519, std: 0.01606, params: {'colsample_bytree': 0.9, 'subsample': 1.0},\n",
       "  mean: -0.07767, std: 0.00998, params: {'colsample_bytree': 1.0, 'subsample': 0.3},\n",
       "  mean: -0.08010, std: 0.01115, params: {'colsample_bytree': 1.0, 'subsample': 0.4},\n",
       "  mean: -0.07650, std: 0.01332, params: {'colsample_bytree': 1.0, 'subsample': 0.5},\n",
       "  mean: -0.07181, std: 0.01353, params: {'colsample_bytree': 1.0, 'subsample': 0.6},\n",
       "  mean: -0.07466, std: 0.01777, params: {'colsample_bytree': 1.0, 'subsample': 0.7},\n",
       "  mean: -0.07334, std: 0.01678, params: {'colsample_bytree': 1.0, 'subsample': 0.8},\n",
       "  mean: -0.07371, std: 0.01635, params: {'colsample_bytree': 1.0, 'subsample': 0.9},\n",
       "  mean: -0.07293, std: 0.01858, params: {'colsample_bytree': 1.0, 'subsample': 1.0}],\n",
       " {'colsample_bytree': 1.0, 'subsample': 0.6},\n",
       " -0.07181341551570757)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb3_1 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=65,  #第二轮参数调整得到的n_estimators最优值\n",
    "        max_depth=4,\n",
    "        min_child_weight=0.4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'binary:logistic',\n",
    "        seed=3)\n",
    "\n",
    "\n",
    "gsearch3_1 = GridSearchCV(xgb3_1, param_grid = param_test3_1, scoring='neg_log_loss',n_jobs=-1, cv=kfold)\n",
    "gsearch3_1.fit(X_train , y_train)\n",
    "\n",
    "gsearch3_1.grid_scores_, gsearch3_1.best_params_,     gsearch3_1.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([0.08540635, 0.09330029, 0.13244481, 0.10141282, 0.10984511,\n",
       "        0.10106721, 0.09771428, 0.09641638, 0.09784307, 0.11141253,\n",
       "        0.10241466, 0.1134635 , 0.11569953, 0.10515118, 0.10730557,\n",
       "        0.10668941, 0.08255706, 0.09119563, 0.10024848, 0.14941745,\n",
       "        0.12698774, 0.1385952 , 0.1368084 , 0.15857425, 0.11419196,\n",
       "        0.11552649, 0.12479119, 0.11368947, 0.11910973, 0.14087515,\n",
       "        0.13886771, 0.15601144, 0.10049853, 0.10398369, 0.11450024,\n",
       "        0.12243128, 0.17173295, 0.1661407 , 0.20893559, 0.12250457]),\n",
       " 'std_fit_time': array([0.00553828, 0.01765558, 0.02804561, 0.01800513, 0.0166033 ,\n",
       "        0.00827015, 0.00162526, 0.00235958, 0.01903624, 0.03447847,\n",
       "        0.01793474, 0.02218524, 0.01467425, 0.0020837 , 0.00247743,\n",
       "        0.00209565, 0.00249576, 0.00359241, 0.00274072, 0.04655594,\n",
       "        0.01206561, 0.03998935, 0.02305162, 0.0722326 , 0.02183217,\n",
       "        0.01596966, 0.02465613, 0.00383329, 0.00317771, 0.03748774,\n",
       "        0.01385825, 0.02150502, 0.0120309 , 0.00260776, 0.00468688,\n",
       "        0.00795507, 0.04354631, 0.02572521, 0.06100895, 0.01497368]),\n",
       " 'mean_score_time': array([0.00636148, 0.00655241, 0.00626078, 0.00470839, 0.00573463,\n",
       "        0.00557547, 0.00469589, 0.00484767, 0.00814447, 0.00516   ,\n",
       "        0.00485015, 0.00500526, 0.00489316, 0.0047658 , 0.00555034,\n",
       "        0.00478272, 0.00465145, 0.00469174, 0.00480175, 0.01218781,\n",
       "        0.00544648, 0.00571227, 0.00652289, 0.00620065, 0.00564103,\n",
       "        0.00774035, 0.00480442, 0.00474114, 0.00534711, 0.00721002,\n",
       "        0.00638533, 0.00553794, 0.00463557, 0.00475774, 0.00472164,\n",
       "        0.00502744, 0.01063056, 0.00721259, 0.00543022, 0.00472631]),\n",
       " 'std_score_time': array([8.57470436e-04, 3.13615423e-03, 2.17727337e-03, 2.23954763e-04,\n",
       "        9.54539269e-04, 1.30113174e-03, 9.64312820e-05, 2.20901554e-04,\n",
       "        3.34233291e-03, 7.30081986e-04, 3.31397400e-04, 3.38889433e-04,\n",
       "        3.61185108e-04, 1.40430640e-04, 1.48309293e-03, 5.53575699e-05,\n",
       "        1.68663484e-04, 1.60190645e-04, 1.70735139e-04, 1.17634524e-02,\n",
       "        8.13056497e-04, 7.53661893e-04, 1.98345241e-03, 2.83587874e-03,\n",
       "        8.99665239e-04, 5.52816508e-03, 1.96769232e-04, 1.20595068e-04,\n",
       "        1.03728820e-03, 4.71466997e-03, 2.74486465e-03, 1.33768493e-03,\n",
       "        9.48885577e-05, 1.81386912e-04, 1.31769098e-04, 2.22061667e-04,\n",
       "        6.19291934e-03, 3.82387351e-03, 3.69095648e-04, 7.44633059e-04]),\n",
       " 'param_colsample_bytree': masked_array(data=[0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.6, 0.7, 0.7, 0.7,\n",
       "                    0.7, 0.7, 0.7, 0.7, 0.7, 0.8, 0.8, 0.8, 0.8, 0.8, 0.8,\n",
       "                    0.8, 0.8, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 1.0,\n",
       "                    1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_subsample': masked_array(data=[0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.3, 0.4, 0.5,\n",
       "                    0.6, 0.7, 0.8, 0.9, 1.0, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8,\n",
       "                    0.9, 1.0, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 0.3,\n",
       "                    0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0],\n",
       "              mask=[False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False,\n",
       "                    False, False, False, False, False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'colsample_bytree': 0.6, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 0.9},\n",
       "  {'colsample_bytree': 0.6, 'subsample': 1.0},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 0.9},\n",
       "  {'colsample_bytree': 0.7, 'subsample': 1.0},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 0.9},\n",
       "  {'colsample_bytree': 0.8, 'subsample': 1.0},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 0.9},\n",
       "  {'colsample_bytree': 0.9, 'subsample': 1.0},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 0.3},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 0.4},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 0.5},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 0.6},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 0.7},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 0.8},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 0.9},\n",
       "  {'colsample_bytree': 1.0, 'subsample': 1.0}],\n",
       " 'split0_test_score': array([-0.08139966, -0.07540038, -0.07489664, -0.07260655, -0.07105202,\n",
       "        -0.06571669, -0.06799899, -0.06035749, -0.08734515, -0.08098774,\n",
       "        -0.07380405, -0.07332233, -0.06017793, -0.06271848, -0.06713905,\n",
       "        -0.05977048, -0.07332104, -0.08607121, -0.07102212, -0.06556982,\n",
       "        -0.06330567, -0.06653743, -0.06169775, -0.06042577, -0.08223981,\n",
       "        -0.07562413, -0.07934533, -0.0663083 , -0.06205785, -0.06059653,\n",
       "        -0.05862446, -0.05848828, -0.08588075, -0.0755047 , -0.078637  ,\n",
       "        -0.06208725, -0.06169938, -0.05923652, -0.05911052, -0.05093165]),\n",
       " 'split1_test_score': array([-0.0948298 , -0.0907325 , -0.09132695, -0.09483549, -0.09350672,\n",
       "        -0.09780584, -0.09548647, -0.09583229, -0.09346656, -0.09353207,\n",
       "        -0.0850047 , -0.08806858, -0.10052322, -0.08711068, -0.0910035 ,\n",
       "        -0.09880603, -0.08440893, -0.0945929 , -0.09091608, -0.09406661,\n",
       "        -0.09315555, -0.09355755, -0.09680908, -0.09136783, -0.08985482,\n",
       "        -0.09629175, -0.09035886, -0.09075759, -0.08948276, -0.0958904 ,\n",
       "        -0.09791754, -0.0969948 , -0.0908367 , -0.09899945, -0.09093442,\n",
       "        -0.09135121, -0.0990904 , -0.0981551 , -0.09765657, -0.09905776]),\n",
       " 'split2_test_score': array([-0.07629572, -0.07810674, -0.08203747, -0.08329206, -0.08521192,\n",
       "        -0.07849455, -0.07683517, -0.07679203, -0.08248625, -0.07829189,\n",
       "        -0.07943503, -0.07777675, -0.07517392, -0.07971403, -0.07207069,\n",
       "        -0.08049366, -0.06724022, -0.07950059, -0.07871434, -0.07529483,\n",
       "        -0.07765772, -0.07778375, -0.08149969, -0.07952955, -0.07546172,\n",
       "        -0.07507795, -0.07740138, -0.08332479, -0.07699431, -0.07389807,\n",
       "        -0.07472165, -0.08048243, -0.07199729, -0.07781202, -0.07422521,\n",
       "        -0.06707951, -0.08167768, -0.07202828, -0.07708644, -0.08113747]),\n",
       " 'split3_test_score': array([-0.0802888 , -0.08367492, -0.08559069, -0.08486587, -0.08444688,\n",
       "        -0.08249883, -0.08592495, -0.08085959, -0.07943539, -0.08559891,\n",
       "        -0.08068622, -0.08844279, -0.08089124, -0.08803662, -0.08749575,\n",
       "        -0.08277927, -0.08110197, -0.07776758, -0.08627208, -0.08330214,\n",
       "        -0.08390459, -0.08689989, -0.0842342 , -0.08534215, -0.07527397,\n",
       "        -0.08605853, -0.08516124, -0.08379583, -0.08862781, -0.07986968,\n",
       "        -0.08511537, -0.08503076, -0.07680818, -0.08312201, -0.08606957,\n",
       "        -0.08344597, -0.08258829, -0.08515217, -0.08245406, -0.08118807]),\n",
       " 'split4_test_score': array([-0.0630486 , -0.0562519 , -0.05569595, -0.06080319, -0.05584347,\n",
       "        -0.05813407, -0.05390785, -0.054312  , -0.0525641 , -0.05584932,\n",
       "        -0.05395969, -0.0528174 , -0.05646613, -0.05298977, -0.04957258,\n",
       "        -0.05562296, -0.0591111 , -0.05758694, -0.05984691, -0.05553918,\n",
       "        -0.05647704, -0.0566302 , -0.05309609, -0.05414097, -0.05921229,\n",
       "        -0.06041202, -0.05829999, -0.0583053 , -0.05687527, -0.05221702,\n",
       "        -0.05252053, -0.05494593, -0.06270614, -0.06497876, -0.05247771,\n",
       "        -0.05506277, -0.04815506, -0.05210115, -0.05219541, -0.05236083]),\n",
       " 'mean_test_score': array([-0.07919361, -0.0768553 , -0.07793161, -0.0792942 , -0.07802968,\n",
       "        -0.07653871, -0.07604688, -0.07363763, -0.07909947, -0.07888088,\n",
       "        -0.07460075, -0.07610914, -0.07465076, -0.0741251 , -0.07347651,\n",
       "        -0.07549924, -0.07305299, -0.07913658, -0.07736715, -0.07476604,\n",
       "        -0.07490796, -0.07629315, -0.07547725, -0.07416848, -0.07643499,\n",
       "        -0.07871036, -0.07813755, -0.07650756, -0.07481356, -0.07250397,\n",
       "        -0.07378693, -0.07519251, -0.07767245, -0.08009549, -0.07649885,\n",
       "        -0.07181342, -0.07465773, -0.07334285, -0.07370855, -0.07293352]),\n",
       " 'std_test_score': array([0.01017984, 0.01153117, 0.01229473, 0.01160597, 0.01319599,\n",
       "        0.01375654, 0.01434263, 0.01485543, 0.01404605, 0.01258575,\n",
       "        0.01088934, 0.01300097, 0.01579904, 0.01391679, 0.01492795,\n",
       "        0.01589189, 0.00917457, 0.01225551, 0.01104872, 0.01340344,\n",
       "        0.01337616, 0.01336349, 0.01585562, 0.01440939, 0.01011131,\n",
       "        0.01198983, 0.01088089, 0.01213835, 0.01337424, 0.01519815,\n",
       "        0.01668758, 0.0160519 , 0.00996713, 0.01113672, 0.01329249,\n",
       "        0.01351714, 0.01775594, 0.01676654, 0.01634555, 0.01857733]),\n",
       " 'rank_test_score': array([38, 28, 31, 39, 32, 27, 21,  7, 36, 35, 12, 22, 13, 10,  6, 20,  4,\n",
       "        37, 29, 15, 17, 23, 19, 11, 24, 34, 33, 26, 16,  2,  9, 18, 30, 40,\n",
       "        25,  1, 14,  5,  8,  3], dtype=int32),\n",
       " 'split0_train_score': array([-0.04378819, -0.03757355, -0.03085561, -0.02503802, -0.02199159,\n",
       "        -0.01851739, -0.01690949, -0.01486347, -0.0460382 , -0.03643785,\n",
       "        -0.02890311, -0.02582326, -0.01967115, -0.01843324, -0.0153666 ,\n",
       "        -0.01412802, -0.04518103, -0.03562093, -0.02735354, -0.02433501,\n",
       "        -0.02032537, -0.01689209, -0.01622772, -0.01357664, -0.04261957,\n",
       "        -0.03386316, -0.02995546, -0.02445397, -0.0200611 , -0.01575788,\n",
       "        -0.01492367, -0.01403362, -0.04513973, -0.0344663 , -0.02540238,\n",
       "        -0.02208224, -0.01950099, -0.01655168, -0.01391801, -0.01360477]),\n",
       " 'split1_train_score': array([-0.042894  , -0.03533099, -0.02651173, -0.02346895, -0.01843002,\n",
       "        -0.01656401, -0.01407793, -0.0127898 , -0.04075142, -0.03450356,\n",
       "        -0.0260979 , -0.02046385, -0.01880546, -0.01540345, -0.01358338,\n",
       "        -0.01158959, -0.04006504, -0.02939681, -0.0257226 , -0.02201421,\n",
       "        -0.01961728, -0.01546068, -0.01404383, -0.0117423 , -0.04038886,\n",
       "        -0.03097789, -0.02609098, -0.02104523, -0.01813095, -0.01427977,\n",
       "        -0.01386253, -0.01116766, -0.04359379, -0.03051307, -0.02666984,\n",
       "        -0.01857718, -0.01729525, -0.01461834, -0.01186652, -0.01087757]),\n",
       " 'split2_train_score': array([-0.04416553, -0.03838965, -0.02899123, -0.02554924, -0.01943442,\n",
       "        -0.0175017 , -0.01555855, -0.01500589, -0.04604595, -0.03581568,\n",
       "        -0.02630584, -0.02313452, -0.01897009, -0.01599537, -0.01525891,\n",
       "        -0.0147455 , -0.04322281, -0.03186041, -0.02916687, -0.02114309,\n",
       "        -0.01877423, -0.01651012, -0.01606782, -0.01495828, -0.0397416 ,\n",
       "        -0.03554066, -0.02645223, -0.02086644, -0.01811142, -0.01665909,\n",
       "        -0.01480447, -0.01415591, -0.04187978, -0.03080963, -0.02505068,\n",
       "        -0.02080788, -0.01721512, -0.01552045, -0.01439818, -0.01379834]),\n",
       " 'split3_train_score': array([-0.04304841, -0.03155268, -0.02569045, -0.02190692, -0.01959439,\n",
       "        -0.01814899, -0.01522593, -0.01542837, -0.04184873, -0.03424121,\n",
       "        -0.02563973, -0.02236404, -0.01769136, -0.01641045, -0.01398125,\n",
       "        -0.0132651 , -0.04175863, -0.03329623, -0.02556585, -0.02118611,\n",
       "        -0.01796238, -0.01635834, -0.01440004, -0.01319431, -0.04201448,\n",
       "        -0.03143868, -0.02305203, -0.02127166, -0.01777215, -0.01613288,\n",
       "        -0.01346358, -0.01225317, -0.03674366, -0.03076701, -0.02409843,\n",
       "        -0.02084948, -0.01836567, -0.0152312 , -0.01341196, -0.01187876]),\n",
       " 'split4_train_score': array([-0.04842781, -0.03616694, -0.03083764, -0.02504647, -0.02162415,\n",
       "        -0.02019206, -0.01675554, -0.01497541, -0.04104369, -0.03866012,\n",
       "        -0.02738176, -0.0231801 , -0.02000302, -0.01687505, -0.0151359 ,\n",
       "        -0.01385048, -0.04520713, -0.03487354, -0.02883127, -0.02165936,\n",
       "        -0.01848604, -0.01640465, -0.01401666, -0.01367932, -0.04646359,\n",
       "        -0.03731737, -0.0272647 , -0.02393362, -0.0202893 , -0.01578472,\n",
       "        -0.01432235, -0.01205834, -0.0446353 , -0.03312971, -0.02546072,\n",
       "        -0.01956533, -0.01702167, -0.01477659, -0.01330961, -0.01234356]),\n",
       " 'mean_train_score': array([-0.04446479, -0.03580276, -0.02857733, -0.02420192, -0.02021491,\n",
       "        -0.01818483, -0.01570549, -0.01461259, -0.0431456 , -0.03593168,\n",
       "        -0.02686567, -0.02299315, -0.01902822, -0.01662351, -0.01466521,\n",
       "        -0.01351574, -0.04308693, -0.03300958, -0.02732803, -0.02206756,\n",
       "        -0.01903306, -0.01632518, -0.01495122, -0.01343017, -0.04224562,\n",
       "        -0.03382755, -0.02656308, -0.02231419, -0.01887298, -0.01572287,\n",
       "        -0.01427532, -0.01273374, -0.04239845, -0.03193714, -0.02533641,\n",
       "        -0.02037642, -0.01787974, -0.01533965, -0.01338086, -0.0125006 ]),\n",
       " 'std_train_score': array([0.00203599, 0.00237681, 0.0021481 , 0.00134402, 0.00136547,\n",
       "        0.00120288, 0.00104429, 0.00093138, 0.00239212, 0.00158816,\n",
       "        0.00116819, 0.00172381, 0.00080048, 0.00102634, 0.00073541,\n",
       "        0.00107444, 0.00198973, 0.00222479, 0.00150495, 0.00117834,\n",
       "        0.00083952, 0.00047125, 0.0009876 , 0.00103181, 0.00235381,\n",
       "        0.00240592, 0.00221645, 0.00154883, 0.00107331, 0.00079148,\n",
       "        0.00055351, 0.00117064, 0.00303949, 0.00158034, 0.00082609,\n",
       "        0.00120124, 0.0009364 , 0.00068568, 0.00085121, 0.00109077])}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch3_1.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('mean_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('std_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split0_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split1_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split2_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split3_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n",
      "/home/jhony/anaconda3/lib/python3.7/site-packages/sklearn/utils/deprecation.py:122: FutureWarning: You are accessing a training score ('split4_train_score'), which will not be available by default any more in 0.21. If you need training scores, please set return_train_score=True\n",
      "  warnings.warn(*warn_args, **warn_kwargs)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.071813 using {'colsample_bytree': 1.0, 'subsample': 0.6}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch3_1.best_score_, gsearch3_1.best_params_))\n",
    "test_means = gsearch3_1.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch3_1.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch3_1.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch3_1.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch3_1.cv_results_).to_csv('my_preds_subsampleh_colsample_bytree_1.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(colsample_bytree), len(subsample))\n",
    "train_scores = np.array(train_means).reshape(len(colsample_bytree), len(subsample))\n",
    "\n",
    "for i, value in enumerate(colsample_bytree):\n",
    "    pyplot.plot(subsample, -test_scores[i], label= 'test_colsample_bytree:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'subsample' )                                                                                                      \n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'subsample_vs_colsample_bytree1.png' )"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
